package main

import (
	"fmt"
	"server/config"
	"server/model/system"
	"server/plugin/SystemInit"
	"server/plugin/db"
	"server/router"
)

func init() {
	// 执行初始化前等待20s , 让mysql服务完成初始化指令
	// time.Sleep(time.Second * 20)
	//初始化redis客户端
	err := db.InitRedisConn()
	if err != nil {
		panic(err)
	}
	// 初始化mysql
	err = db.InitMysql()
	if err != nil {
		panic(err)
	}
}

func main() {
	// 可以在这里添加测试采集代码
	// testCollect()
	start()
}

// 测试采集函数
func testCollect() {
	// 需要先导入采集模块
	// import "server/plugin/spider"

	// 等待系统初始化完成
	// time.Sleep(time.Second * 5)

	// 方式1: 自动采集所有启用的站点（采集最近3小时内更新的影片）
	// go spider.AutoCollect(3)

	// 方式2: 批量采集指定站点（需要先获取站点ID）
	// go spider.BatchCollect(24, "站点ID1", "站点ID2")

	// 方式3: 采集单个站点（需要先获取站点ID）
	// go spider.HandleCollect("站点ID", 24)

	// 方式4: 全量采集（采集所有数据，-1表示全量）
	// go spider.AutoCollect(-1)
}

func start() {
	// 启动前先执行数据库内容的初始化工作
	DefaultDataInit()
	// 开启路由监听
	r := router.SetupRouter()
	_ = r.Run(fmt.Sprintf(":%s", config.ListenerPort))
}

func DefaultDataInit() {
	// 如果系统中不存在用户表则进行初始化
	if !system.ExistUserTable() {
		// 初始化数据库相关数据
		SystemInit.TableInIt()
		// 初始化网站基本配置信息
		SystemInit.BasicConfigInit()
		// 初始化轮播组件信息
		SystemInit.BannersInit()
	}
	// 初始化影视来源列表信息, 并回复恢复定时任务
	SystemInit.SpiderInit()
}
